7单选以下是两个源程序文件:/*m1.c*//*m2.c*/intp1;intmain=1;intmain()intp1(){{intp1=p1();intp1=main++;returnp1;returnmain;}}对于上述两个源程序文件链接时的符号解析,错误的是()。
A.在m1中,定义了一个强符号main和一个弱符号p1
B.在m2中,定义了一个强符号p1和一个强符号main
C.因为出现了两个强符号main,所以会发生链接错误
D.在模块m1的所有语句中,对符号p1的引用一共有三处
8单选以下是两个源程序文件:/*m1.c*//*m2.c*/intx=100;floatx;intp1(viod);staticmain=1;intmain()intp1(){{x=p1();intp1=main+(int)x;returnx;returnp1;}}对于上述两个源程序文件链接时的符号解析,错误的是()。
A.m2中的变量p1与函数p1被分配在不同存储区
B.m2中对x的引用与m2中对x的定义绑定
C.虽然x、main和p1都出现了多次定义,但不会发生链接错误
D.m1中对x的两处引用都与m1中对x的定义绑定
9单选以下是两个源程序文件:/*m1.c*//*m2.c*/#include<stdio.h>intx=100;doublex;shorty=1,z=2;intmain()voidp1(){{p1();x=-1.0;printf(“x=%d,z=%d\n”,x,z);}}上述程序执行的结果是()。提示:1074790400=2^30+2^20,16400=2^14+2^4。
A.x=100,z=2
B.x=-1074790400,z=0
C.x=-1,z=2
D.x=0,z=-16400
10单选假设调用关系如下:func.o→libx.a和liby.a中的函数,libx.a→libz.a中的函数,libx.a和liby.a之间、liby.a和libz.a相互独立,则以下几个命令行中,静态链接发生错误的命令是()。
A.gcc-static–omyfuncfunc.olibx.aliby.alibz.a
B.gcc-static–omyfuncfunc.oliby.alibx.alibz.a
C.gcc-static–omyfuncfunc.olibx.alibz.aliby.a
D.gcc-static–omyfuncfunc.oliby.alibz.alibx.a
1单选以下有关重定位功能的叙述中,错误的是()。
A.重定位的第二步是确定每个段的起始地址,并确定段内每个定义处符号的地址
B.重定位的第一步应先将相同的节合并,且将具有相同存取属性的节合并成段
C.重定位的最后一步是将引用处的地址修改为与之关联(绑定)的定义处的首地址
D.重定位的最终目标是重新确定各模块合并后每个引用所指向的目标地址
计算机系统基础(一):程序的表示、转换与链接
南京大学
军职在线答案
大学网课